﻿SeadragonJSEventManager = function() {
    /// <summary>Creates a MouseTracker for the given HTML element. This MouseTracker is not initially tracking.</summary>
    /// <field name="target">HTML Element. The element that is getting tracked. This property is aliased; re-assigning it has no effect, but modifying it does.</field>
    /// <field name="enterHandler" type="Function">Handler function for the mouse entering the target element. Both buttonDownElmt and buttonDownAny are false if the mouse button is up. Otherwise, buttonDownAny is always true, and buttonDownElmt is true if the mouse was initially pressed inside the target element. (Note that buttonDownElmt implies buttonDownAny, but not necessarily the reverse.)</field>
    /// <field name="exitHandler" type="Function">Handler function for the mouse exiting the target element. Both buttonDownElmt and buttonDownAny are false if the mouse button is up. Otherwise, buttonDownAny is always true, and buttonDownElmt is true if the mouse was initially pressed inside the target element. (Note that buttonDownElmt implies buttonDownAny, but not necessarily the reverse.)</field>
    /// <field name="pressHandler" type="Function">Handler function for the mouse button being pressed inside the target element.</field>
    /// <field name="releaseHandler" type="Function">Handler function for the mouse button being released. Note that like regular "mouseup" events, this is always triggered when the mouse is released over the target element. However, unlike regular "mouseup" events, this is also always triggered when the corresponding "mousedown" event was fired inside the target element, even if the mouse is no longer over the element. insideElmtPress is true if the mouse was initially pressed inside the target element, and insideElmtRelease is true if this release occured inside the target element. (Note that at least one of insideElmtPress and insideElmtRelease will be true.)</field>
    /// <field name="clickHandler" type="Function">Handler function for the mouse button being clicked inside the target element. quick is true if, during the click, the mouse was neither moved a significant distance nor held down for a significant amount of time. shift is true if the shift key was pressed during the click. (The thresholds used to determine if the click was quick are defined in Seadragon.Config.)</field>
    /// <field name="dragHandler" type="Function">Handler function for the mouse being dragged. This is triggered only when the drag was initially begun inside the target element, but is triggered wherever the mouse may be at the moment. delta is a Seadragon.Point for the distance the mouse was dragged. shift is true if the shift key was pressed during the drag.</field>
    /// <field name="scrollHandler" type="Function">Handler function for the mouse wheel being scrolled inside the target element. scroll is the amount the mouse wheel was scrolled, normalized between -1 and 1. shift is true if the shift key was pressed during the scroll.</field>
    /// <returns type="Object"></returns>
}

SeadragonJSEventManager.prototype =
{
    target: null,
    enterHandler: null,
    exitHandler: null,
    pressHandler: null,
    releaseHandler: null,
    clickHandler: null,
    dragHandler: null,
    scrollHandler: null,

    isTracking: function() {
        /// <summary>Returns true if the target element is currently being tracked.</summary>
        /// <returns type="Boolean"></returns>           
    },

    setTracking: function(tracking) {
        /// <summary>Sets whether the target element should be tracked.</summary>
        /// <param name="tracking"></param>
    }
}
